let arr = [[1], [2, 3], [4, 5, 6, [7, 8, [9, 10, [11]]]], 12];

// console.log(
//   arr
//     .toString()
//     .split(",")
//     .map((item) => Number(item))
// );
function flatten(arr) {
  return arr.reduce(function (prev, next) {
    return prev.concat(Array.isArray(next) ? flatten(next) : next);
  }, []);
}

console.log(flatten(arr));
// console.log(
//   JSON.stringify(arr)
//     .replace(/\[|\]/g, "")
//     .split(",")
//     .map((item) => Number(item))
// );

// while (arr.some((item) => Array.isArray(item))) {
//   arr = [].concat(...arr);
// }
// console.log(arr);

// Array.prototype.myFlat = function () {
//   let result = [];
//   let _this = this;
//   function _flat(arr) {
//     for (let i = 0; i < arr.length; i++) {
//       let item = arr[i];
//       if (Array.isArray(item)) {
//         _flat(item);
//       } else {
//         result.push(item);
//       }
//     }
//   }
//   _flat(_this);
//   return result;
// };
// console.log(arr.myFlat());
